package com.ono.gestorLogs;


import java.io.File;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.PropertyConfigurator;

/**
 * Clase para la gestion de los logs en ONO.
 * 
 * @author madidms01
 * 
 */
public class OnoLog {

	/**
	 * Objeto de Log4j para gestion de Logs.
	 */
	private static Log log = null;

	/**
	 * Se inicia el Log del proceso.
	 * 
	 * @param fProperties
	 *            Fichero Properties del log
	 * @param sNombreLog
	 *            Nombre que queremos que tenga el fichero de log.
	 * @return boolean
	 */
	public final boolean bIniciarLog(
			final File fProperties,
			final String sNombreLog) {

		boolean bRetorno = false;

		if (!fProperties.canRead()) {
			System.out.println("El fichero properties del log no existe");
		} else {

			System.setProperty("CabeceraLog", sNombreLog);
			PropertyConfigurator.configure(fProperties.getAbsolutePath());
			log = LogFactory.getLog(OnoLog.class);
			bRetorno = true;
		}
		
		return bRetorno;
	}

	/**
	 * Escribe un linea de log en el nivel indicado.
	 * 
	 * @param claseOrigenLog Nombre clase origen
	 * @param iNivel Nivel de traza
	 * @param sMensaje Mensaje a escribir
	 */
	public final void escribirTraza(
			final String claseOrigenLog,
			final int iNivel, 
			final String sMensaje) {
		
		if (log == null) {
			System.out.println("Sistema de log no inicializado correctamente");
			return;
		}
		
		log = LogFactory.getLog(claseOrigenLog);

		switch (iNivel) {
		case Constantes.LOG_DEBUG:
			log.debug(sMensaje);
			break;
		case Constantes.LOG_INFO:
			log.info(sMensaje);
			break;
		case Constantes.LOG_WARN:
			log.warn(sMensaje);
			break;
		case Constantes.LOG_ERROR:
			log.error(sMensaje);
			break;
		default:
			break;
		}

	}

}
